iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

看似普通的檔案可能暗藏 flag 或其他重要資訊,這些資訊必須透過深入的分析才能發現,韌體中通常包含多層壓縮的檔案系統與可執行檔案。這些檔案表面上可能是圖片、音訊或文本,但實際上內部可能嵌入了其他格式的數據,如壓縮檔案或加密數據。

Binwalk

Binwalk 可以用來分析、提取與掃描二進位檔案,能快速辨識檔案中的結構、格式及嵌入的數據。針對檔案內嵌的數據進行精確解析,從中找出並提取數據。無論是圖像檔案中的隱寫數據,還是多層嵌套的壓縮檔案,都可以使用 Binwalk 來解析並提取隱藏資訊。主要功能包括:

  • 標頭掃描: 根據已知的檔案特徵(檔案標頭),Binwalk 可快速辨識檔案中的數據類型,例如壓縮檔案、圖片、音訊、韌體等。

  • 自動提取: 支援自動解壓縮和提取檔案中的嵌入數據,無需手動逐層操作。

  • 檔案系統分析: 可輕易地從韌體中提取出壓縮的檔案系統,讓使用者能夠深入分析其內部結構。

以下皆以 Linux 系統演示

安裝 Binwalk

sudo apt install binwalk

常用指令

  1. 標頭掃描:掃描檔案中的不同數據類型。
binwalk <file>

範例:分析圖片中藏有的檔案標頭

輸入

binwalk hidden_image.png

輸出

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 594 x 1104, 8-bit/color RGBA, non-interlaced
272492        0x4286C         Zip archive data, at least v2.0 to extract, compressed size: 378942, uncompressed size: 383937, name: secret_file.zip
651600        0x9F150         End of Zip archive, footer length: 22

-> 表示在 hidden_image.png 檔案中嵌入了一個 ZIP 壓縮檔案,位於偏移量 272492 處。

  1. 自動提取:使用 -e 參數,自動提取嵌入在檔案中的壓縮檔、圖片或其他檔案。
binwalk -e <file>

範例:使用參數 -e 來提取嵌入的數據

輸入

binwalk -e hidden_image.png

輸出
自動將 ZIP 檔案提取到一個名為 hidden_image.png.extracted 的資料夾中。

那我們開始今天的練習吧~

Lab_1 - Matryoshka doll

https://ithelp.ithome.com.tw/upload/images/20241006/20169462T5HVApgrAX.png

將題目的檔案下載後我們得到一個 flag.png 的圖片,打開如下,明顯不是答案

https://ithelp.ithome.com.tw/upload/images/20241006/20169462LSct1QZBzf.png

使用 binwalk 工具來查看圖片有沒有隱藏資訊,發現藏有四個,其中 secret 裡面還有另一個 flag.png 的檔案

https://ithelp.ithome.com.tw/upload/images/20241006/20169462N9UBLJ0aT7.png

使用 binwalk -e flag.png 將原檔案裡面的其他隱藏資料提取出來,預設會將結果放進 _flag.png.extracted 資料夾中。打開資料夾後把 secret 點開,裡面的圖片就是我們的正解 flag

https://ithelp.ithome.com.tw/upload/images/20241006/20169462y3oYRjDJ8l.png

Lab_2 - hideme

https://ithelp.ithome.com.tw/upload/images/20241006/20169462V6NHfoWO4S.png

這題的檔案下載後是一張 .jpg 的圖片,如下。

https://ithelp.ithome.com.tw/upload/images/20241006/20169462uPXZ8DIlR7.png

使用 binwalk -e doll.jpg 將提取結果放至 _doll.png.extracted,點開後有檔案夾 base_images 跟一個 .zip 檔。base_images 點開後有一張 2_c.jpg 的圖片,繼續使用 binwalk -e xxxx.jpg 指令來進行下一層的提取。

https://ithelp.ithome.com.tw/upload/images/20241006/20169462j59NwaUqBd.png
https://ithelp.ithome.com.tw/upload/images/20241006/20169462Kypd9LgNG9.png

直到提取 4_c.jpg 時,我們可以看到有 flag.txt 這個檔案。點開 .txt 檔之後就是題目的 flag 啦

https://ithelp.ithome.com.tw/upload/images/20241006/20169462AYXcNAhRS2.png
https://ithelp.ithome.com.tw/upload/images/20241006/20169462BkOo2hKynM.png

今天的練習就到這邊,以下是參考資料,請搭配服用:

binwalk-1
binwalk-2
binwalk-3

內文如有錯誤,還請不吝指教~


上一篇
Day21 - [Forensics] Endianness
下一篇
Day23 - [Skills] 常用 Linux 指令
系列文
新手村預備,CTF 小菜雞跌跌撞撞的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言